package com.example.design.singleton;

/**
 * @ClassName Singleton2
 * @Description 饿汉式单例(静态代码块----线程安全）
 * 线程安全性： 实例在类加载的时候即被实例化，因此线程安全。
 * 是否懒加载： 没有延迟加载，如果长时间没用到这个实例，则会造成内存的浪费。
 * 性能： 性能比较好
 * 优点:简单粗暴,加载类时直接实例化这个类,避免线程同步。
 * 缺点:资源效率不高，可能getInstance()永远不会执行到,但执行该类的其他静态方法或者加载了该类(class.forName),那么这个实例任然初始化。
 * @Author Administrator
 * @Date 2020/5/7 10:14
 * @Version 1.0
 */
public class Singleton2 {

    private static Singleton2 instance;
    static {
        instance = new Singleton2();
    }

    private Singleton2(){}

    public static Singleton2 getInstance(){
        return instance;
    }

    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Singleton2 s1 = Singleton2.getInstance();
        Singleton2 s2 = Singleton2.getInstance();
        s1.setName("zhangsan2");
        s2.setName("lisi2");
        System.out.println(s1.getName());
        System.out.println(s2.getName());
        System.out.println(s1.getName().equals(s2.getName()));
    }

}
